(write-file): Handle directory name as arg.
authorRichard M. Stallman <rms@gnu.org>
Wed, 3 Mar 1993 05:12:05 +0000 (05:12 +0000)
committerRichard M. Stallman <rms@gnu.org>
Wed, 3 Mar 1993 05:12:05 +0000 (05:12 +0000)
lisp/files.el

index 49d452b92e2b203ef1258015bb52f803a6c5aca2..60329f162b204f40fd71b86e00067cb9fc74f778 100644 (file)
@@ -935,7 +935,10 @@ if you wish to pass an empty string as the argument."
 
 (defun write-file (filename)
   "Write current buffer into file FILENAME.
-Makes buffer visit that file, and marks it not modified."
+Makes buffer visit that file, and marks it not modified.
+If the buffer is already visiting a file, you can specify
+a directory name as FILENAME, to write a file of the same
+old name in that directory."
 ;;  (interactive "FWrite file: ")
   (interactive
    (list (if buffer-file-name
@@ -946,7 +949,13 @@ Makes buffer visit that file, and marks it not modified."
                                          (buffer-local-variables)))
                               nil nil (buffer-name)))))
   (or (null filename) (string-equal filename "")
-      (set-visited-file-name filename))
+      (progn
+       ;; If arg is just a directory,
+       ;; use same file name, but in that directory.
+       (if (and (file-directory-p filename) buffer-file-name)
+           (setq filename (concat (file-name-as-directory filename)
+                                  (file-name-nondirectory buffer-file-name))))
+       (set-visited-file-name filename)))
   (set-buffer-modified-p t)
   (save-buffer))
 \f